Computer memory is allocated to programs executing on the computer in units referred to as physical pages. Each physical page is mapped to one or more virtual pages that store data used by the program. Because memory on computer systems is constantly in short supply, one of the primary functions of modern computers is managing the allocation of physical pages to programs. This task can be made more complex as the types of memory requested differs from program to program, within a single program, and over time.